package com.lanou3g.code0410;

/**
 * Created by dllo on 18/4/10.
 */
//多态
public class AnimalTest02 {

    public static void main(String[] args) {
        //父类引用指向子类对象  －－－－－－叫做多态(一个类型多种形态)
        //父类创建的本体是子类，有继承才会有多态

        Animal animal0 = new Animal();
        animal0.setKind("猫");
        Animal animal = new Cat();
       // animal.fun(); //调不到cat中的方法 只能调用到引用中的类（Animal）的方法
        Cat cat = (Cat)animal; //向下转型 （至少经历一次向上转型 ，才能强制类型转为cat  Animal animal = new Cat();）

        Animal a = cat; // 向上转型
       // Dog dog = (Dog)animal;  //转型失败，转型本体不一致，无法转
       // dog.lookDoor();
        cat.fun();

        animal.setKind("gou");
        Animal animal1 = new Dog();

        Animal animal2 = new EnglishShortCat(); //一次向上转两次 ，可以向下连转两次
        Cat c = (Cat)animal2; //可以
        EnglishShortCat ec = (EnglishShortCat)c;


        Zoo zoo = new Zoo();
        zoo.feed(animal);

        zoo.feed(animal1);
        zoo.feed(animal2);
    }

}
